package com.quectel.pay.module.merchant.dto;

import lombok.Data;

import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotNull;
import java.io.Serializable;
import java.util.Date;

/**
 * 商户支付渠道
 *
 * @author ryan
 * @date 2021-01-27 14:26:22
 */
@Data
public class PayChannelDto implements Serializable {

    private Long id;
    /**
     * 渠道类型 1支付宝 2微信JSAPI 3微信APP
     */
    @NotNull
    private Byte payType;
    /**
     * 商户id
     */
    private Long mchId;
    /**
     * 渠道配置
     */
    @NotBlank
    private String payConfig;
    /**
     * 1正常0删除
     */
    private Byte status;
    /**
     * 创建时间
     */
    private Date createTime;
    /**
     * 修改时间
     */
    private Date editTime;


    /**
     * 支付宝支付通道参数
     */
    @Data
    public static class AliChannelConfig {

        private String appId;

        /**
         * 自己生成的私钥
         */
        private String privateKey;

        /**
         * 支付宝公钥
         */
        private String publicKey;

        /**
         * 是否是沙盒环境
         */
        private boolean sandbox;
    }

    /**
     * 微信JSAPI支付通道参数
     */
    @Data
    public static class WeChatJSAPIChannelConfig {

        public static final String VERSION_V2 = "v2";
        public static final String VERSION_V3 = "v3";

        /**
         * v2 v3都需要
         */
        private String appId;
        /**
         * v2 v3都需要
         */
        private String secret;
        /**
         * v2 v3都需要
         */
        private String mchId;
        /**
         * v2 v3都需要
         */
        private String key;

        /**
         * v2 v3都需要
         */
        private Long certFileId;

        /**
         * 版本信息v2 v3
         */
        private String version;


        /**
         * v3需要
         */
        private String merchantSerialNumber;

    }

    /**
     * 微信APP支付通道参数
     */
    @Data
    public static class WeChatAppChannelConfig {

        public static final String VERSION_V2 = WeChatJSAPIChannelConfig.VERSION_V2;
        public static final String VERSION_V3 = WeChatJSAPIChannelConfig.VERSION_V3;

        /**
         * v2 v3都需要
         */
        private String appId;
        /**
         * v2 v3都需要
         */
        private String secret;
        /**
         * v2 v3都需要
         */
        private String mchId;
        /**
         * v2 v3都需要
         */
        private String key;

        /**
         * v2 v3都需要
         */
        private Long certFileId;

        /**
         * 版本信息v2 v3
         */
        private String version;


        /**
         * v3需要
         */
        private String merchantSerialNumber;
    }

}
